﻿// UartFile.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <windows.h>
#include <iostream>
#include <list>

#include <io.h>
#include "Common.h"
#include "DataLink.h"
#include "FileMgr.h"
#include "Packet.h"

using namespace std;

static LinkHand Link[2];
static bool bTaskRun = 0;

#if defined(SELF_TEST) && (SELF_TEST)
DWORD WINAPI McuTask(LPVOID lpParamter)
{
    MCUDev* pdev = new MCUDev("C:\\MapDownload\\mapabc\\mcu");

    pdev->bind(Link[1]);
    while (bTaskRun)
    {
        pdev->Process();
    }

    delete pdev;

    return 0L;
}
#endif

int main()
{
    CFileList    *fileList = new CFileList;

    CFileList::getFiles("E:\\ElecDIY\\HeartBoard\\TileMaps\\hms", fileList);

#if defined(SELF_TEST) && (SELF_TEST)
    Link[0] = CreateLink(LINK_PC2MCU);
    Link[1] = CreateLink(LINK_MCU2PC);
    bTaskRun = true;
    HANDLE hThread = CreateThread(NULL, 0, McuTask, NULL, 0, NULL);
#else
    Link[0] = CreateLink(14);
    if (Link[0] == NULL)
    {
        printf("Open DataLink failed\r\n");
        delete fileList;
        return 0;
}
#endif

    Packet setup(OPT_NORMAL);
    setup.bind(Link[0]);
    while (setup.GetState() != ST_COMPLETE)
    {
        setup.Process();
        //setup.TestProc();
    }

//     setup.SetState(ST_MKFS);
//     while (setup.GetState() != ST_COMPLETE)
//     {
//         setup.Process();
//     }

    fileList->Transmit(Link[0]);

    Packet finsh(OPT_NORMAL);
    finsh.bind(Link[0]);
    while (finsh.GetState() != ST_COMPLETE)
    {
        finsh.Process();
    }

    bTaskRun = false;
    delete fileList;
    Sleep(500);
#if defined(SELF_TEST) && (SELF_TEST)
    DestoryLink(Link[0]);
    DestoryLink(Link[1]);
#else
    DestoryLink(Link[0]);
#endif
    system("Pause");

    return 0;
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
